function init_proj()

	projectiles = {}

end

function update_proj(dt, proj, grid)

	if proj ~= nil then
		for i = #proj, 1, -1 do
			if proj[i] ~= nil then



				--proj[i].x = proj[i].x + ((proj[i].dir_x*-1)*dt)
				--proj[i].y = proj[i].y + ((proj[i].dir_y*-1)*dt)
				--print(proj[i].dir_x, proj[i].dir_y)

				-- this keeps projectiles from going too slow when the mouse is clicked
				-- near the player
				if (proj[i].dir_x < 100 and proj[i].dir_x > -100) or
					(proj[i].dir_y < 100 and proj[i].dir_y > -100) then
					if proj[i].dir_x > 0 then proj[i].dir_x = proj[i].dir_x*2
					elseif proj[i].dir_x < 0 then proj[i].dir_x = proj[i].dir_x*2 end
					if proj[i].dir_y > 0 then proj[i].dir_y = proj[i].dir_y*2
					elseif proj[i].dir_y < 0 then proj[i].dir_y = proj[i].dir_y*2 end
				end
--[[
				if (proj[i].dir_y < 100 and proj[i].dir_y > -100) then
					if proj[i].dir_y > 0 then proj[i].dir_y = proj[i].dir_x*(math.pi)
					elseif proj[i].dir_y < 0 then proj[i].dir_y = proj[i].dir_x*(math.pi) end
				end
]]
				proj[i].x = proj[i].x + (proj[i].dir_x*-1)*proj[i].speed
				proj[i].y = proj[i].y + (proj[i].dir_y*-1)*proj[i].speed



				local pX = math.floor((proj[i].x-dOX)/(tile_size*scale))+map_x
				local pY = math.floor((proj[i].y-dOY)/(tile_size*scale))+map_y

				--print("moving projectile ", pX, pY)


				if proj[i].x > max_view_x or
					proj[i].y > max_view_y or
					proj[i].x < dOX or
					proj[i].y < dOY then

					--table.remove(proj, i)

					proj[i].visible = false

				else

					proj[i].visible = true



				end

				local ce = Enemy:check_collision(pX, pY)

				for i = 1, #ce do
					if ce[i] then
						if proj[i] then
							ce[i]:damage(proj[i].dmg)
							table.insert(anims, { x = proj[i].x,
									y = proj[i].y, anim = proj[i].anim, t = "bb" })
							proj[i] = nil
						end
					end

				end




				if grid ~= nil then
					if grid[pY] ~= nil then
						if grid[pY][pX] ~= nil then
							if grid[pY][pX] == wall_tile
								or grid[pY][pX] == wall_damaged_tile then

								grid[pY][pX] = wall_damaged_tile

								draw_map(grid)
								if proj[i] then
									table.insert(anims, { x = proj[i].x,
										y = proj[i].y, anim = proj[i].anim, t = "bb" })

									table.remove(proj, i)
								end

							end
						end
					end
				end



			end

		end
	end



end

function proj_tile(proj, grid)

	local pX = math.floor((proj.x-dOX)/(tile_size*scale))
	local pY = math.floor((proj.y-dOY)/(tile_size*scale))

	--print("proj X : ", pX, "proj Y : ", pY)



end


function spawn_proj(proj, origin_x, origin_y, target_x, target_y, image, anim, dmg, speed)

	Proj = {}

	local rX = (origin_x-target_x)
	local rY = (origin_y-target_y)
	local r = rX/rY

	Proj.x = origin_x
	Proj.y = origin_y
	Proj.dest_x = target_x
	Proj.dest_y = target_y
	Proj.dir_x = rX
	Proj.dir_y = rY
	Proj.speed = speed or 0.1
	Proj.image = image
	Proj.anim = anim
	Proj.rate = 2
	Proj.visible = true
	Proj.dmg = dmg or 10


	--print("dir_x : ", Proj.dir_x, "dir y: ", Proj.dir_y)
	proj_tile(Proj)

	table.insert(proj, Proj)

end
